package NGUYENMINHHIEU.XMLDEMO.LIB;

import java.io.File;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;

public class ReadXMLFiles {
    public static void main(String[] args) {
        try {
            // 1. Lấy đường dẫn tương đối tới files
            String path = "D:/DEMO/Student.xml";

            // 2. Khởi tạo đối tượng files (tham chiếu tới files)
            File fXmlFile = new File(path);

            // ?????
            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
            Document doc = null;

            // 3. Kiểm tra files trước khi bindding dữ liệu trong files XML vào
            // Documents
            if (fXmlFile.exists()) {
                doc = dBuilder.parse(fXmlFile);
                
                // 4. normalize???
                doc.getDocumentElement().normalize();

                // 5. Hiển thị tên node gốc
                System.out.println("Root element :" 
                        + doc.getDocumentElement().getNodeName());   //iMIC

                // 6. Lấy ra danh sách phần tử "Student"
                NodeList nList = doc.getElementsByTagName("Student"); // don't
                                                                      // fix!!!

                System.out.println("----------------------------");
                int i = nList.getLength();
                System.out.println("Số phần tử: " + i);

                // 7. Duyệt danh sách phần tử trong nList để hiển thị ra ngoài màn
                // hình
                for (int temp = 0; temp < nList.getLength(); temp++) {
                    Node nNode = nList.item(temp);
                    // a. Hiển thị tên node hiện thời
                    System.out.println("\nCurrent Element :" + nNode.getNodeName());

                    // b. Kiểm tra kiểu của node
                    if (nNode.getNodeType() == Node.ELEMENT_NODE) {
                        Element eElement = (Element) nNode;
                        System.out.println("id : " + eElement.getAttribute("id"));
                        System.out.println("RollNo : "
                                + eElement.getElementsByTagName("RollNo").
                                        item(0).getTextContent());
                        System.out.println("FullName : "
                                + eElement.getElementsByTagName("FullName").
                                        item(0).getTextContent());
                        System.out.println("Email : " 
                                + eElement.getElementsByTagName("Email").
                                        item(0).getTextContent());
                        System.out.println("Mark : " 
                                + eElement.getElementsByTagName("Mark").
                                        item(0).getTextContent());
                    }
                }
            }
            else{
                System.out.println("Files không tồn tại. Vui lòng kiểm tra lại đường dẫn tới files");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
